Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

163
Visualizações
La forma más apropiada de obtener esto: $($(".answer")[0])

Supongamos que quiero obtener el primer elemento entre todos los elementos de la clase ".respuesta"

 $($(".answer")[0])

Puedo hacer lo anterior, pero ¿cuál es el mejor equilibrio entre elegancia y velocidad?

*cambió la pregunta para reflejar la discusión actual

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

No puedo hablar del aspecto de la elegancia, pero el aspecto del rendimiento aquí puede marcar una gran diferencia.

A partir de un conjunto de pruebas de JavaScript , parece que su método original es en realidad el más eficiente y, contrariamente a la hipótesis de que la respuesta aceptada está vinculada, los selectores de Sizzle que no son CSS tienden a ser mucho menos eficientes que los selectores de métodos. Hay una razón para eso. El $('.answer') puede usar el getElementsByClass() nativo del navegador sin tener que recorrer manualmente los resultados. El :first selector complica eso. En este caso, el uso de los selectores de chisporroteo parece ralentizar la selección en un factor de entre 4 y 5.

Yo diría que, con jQuery, el rendimiento debería triunfar sobre la elegancia, y toda la evidencia (¡todos los navegadores que he probado hasta ahora!) parece indicar que la solución poco elegante de OP es la más rápida por una buena cantidad.

Estos son los resultados de los navegadores con más ejecuciones de prueba:

ingrese la descripción de la imagen aquí

(Los números son 'operaciones por segundo', por lo que los números más altos son más rápidos, los números más bajos son más lentos).

over 4 years ago · Santiago Trujillo Relatório

0

Los siguientes son todos equivalentes en funcionalidad (aunque no en velocidad):

  • var a0 = $($('.answer')[0]);
  • var a0 = $('.answer').first(); - ver http://api.jquery.com/first/
  • var a0 = $('.answer:first'); - ver http://api.jquery.com/first-selector/
  • var a0 = $('.answer').eq(0); - ver http://api.jquery.com/eq/
  • var a0 = $('.answer:eq(0)'); - ver http://api.jquery.com/eq-selector/

¿Cual es el mejor?
Se ha planteado la hipótesis de que las versiones del selector deberían ser más rápidas que las versiones del método (y la lógica tiene cierto sentido), pero aún no he encontrado un punto de referencia confiable para varios navegadores y documentos que demuestre que esto es cierto.

Y en algunos casos no puede usar el selector, ya que tiene un objeto jQuery resultante de resultados encadenados y luego debe reducirlo.

Editar : según la excelente información de las pruebas de @yc a continuación, a continuación se resumen los resultados de las pruebas actuales (4 de febrero de 2011) y se comparan con una línea de base de .answer:first :

          :primero :eq(0) .primero() .eq(0) $($('...')[0])
Chrome 8+ 100 % 92 % 224 % 266 % 367 %
   FF 3,6 100 % 100 % 277 % 270 % 309 %
  FF 4.0b 100 % 103 % 537 % 521 % 643 %
 Safari 5 100% 93% 349% 352% 467%
 Ópera 11 100% 103% 373% 374% 465%
     ES 8 100 % 101 % 1130 % 1246 % 1767 %
 iPhone 4 100% 95% 269% 316% 403%
================================================== ===
 Ponderado 100% 92% 286% 295% 405%
    Mayor 100% 95% 258% 280% 366%
  • La línea Ponderada muestra el rendimiento ponderado por el número de pruebas por navegador; los navegadores populares (entre los que se prueban) se cuentan con más fuerza.
  • La línea Principal muestra lo mismo, solo que incluye versiones no beta de los principales navegadores de escritorio.

En resumen: la hipótesis es (actualmente) incorrecta. Los métodos son significativamente más rápidos que los selectores de Sizzle y, casi sin excepción, el código del OP $($('.answer')[0]) es el más rápido de todos.

over 4 years ago · Santiago Trujillo Relatório

0

Use el :first selector o el .first método de filtro:

 $(".answer:first");

o:

 $(".answer").first();
over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda